#define SEG_NUM 10

typedef struct Com_seg Com_seg;

struct Com_seg {
	unsigned int refs[SEG_NUM];
	void *ptrs[SEG_NUM];
	Com_seg *next;
}; /* Adds up to 128 bytes */

typedef struct {
        long long idx;
        void *ptr;
} Com_ptr;

int
com_init(Com_ptr *com, Com_seg **seg, void *val);

void
com_init_com(Com_ptr *com1, Com_ptr *com2);

void
com_init_idiv(Com_ptr *com, void *val);

void
com_bind(Com_ptr *com1, Com_ptr *com2);

int
com_move(Com_ptr *com, Com_seg **seg, void *val);

void
com_set(Com_ptr *com, void *val);

void
com_set_indiv(Com_ptr *com, void *val);

void *
com_val(Com_ptr *com);

Com_seg *
seg_new(void);

void
seg_free(Com_seg *seg);


